/*
 * elbp/pc/elbp.hh - PC-specific ELBP definitions.
 * Copyright (C) 2007  Mikhail Vorozhtsov
 * See the LICENSE section of the README file for details.
 */

/* $Id$ */

#ifndef HEADER_ELBP_PC_ELBP_HH
#define HEADER_ELBP_PC_ELBP_HH

#ifndef IN_CXX_CODE

# define ELBP_PC_FEAT_BOOT_DEVICE 1
# define ELBP_PC_FEAT_MMAP 2

#else

START_NAMESPACE2 (elbp,pc)

struct header_t
{
  version_t version;
  u32_t feats;
} PACKED;

struct mem_region_info_t
{
  u64_t addr;
  u64_t size;
  u32_t type;
  u32_t : 32;
  mem_region_info_t *next;
} PACKED;

struct info_t
{
  enum feat_t
  {
    FEAT_BOOT_DEVICE = 1,
    FEAT_MMAP = 2
  };

  feat_t feats;
  u32_t boot_device;
  mem_region_info_t *mem_region_info;
} PACKED;

END_NAMESPACE2

#endif /* IN_CXX_CODE */

#endif /* HEADER_ELBP_PC_ELBP_HH */

